/*
 * Tencent is pleased to support the open source community by making Blueking Container Service available.
 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
 * Licensed under the MIT License (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * http://opensource.org/licenses/MIT
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package kubedriver

import (
	"github.com/Tencent/bk-bcs/bcs-common/common/types"
	bcsVersion "github.com/Tencent/bk-bcs/bcs-common/common/version"
	"github.com/Tencent/bk-bcs/bcs-k8s/bcs-k8s-driver/kubedriver/options"
	"os"
)

// GetServerInfo returns server info of current driver node
func GetServerInfo(opts *options.KubeDriverServerOptions, clusterID string) types.ServerInfo {
	hostname, _ := os.Hostname()

	var port uint
	var scheme string
	if opts.SecureServerConfigured() {
		scheme = options.HTTPS
		port = opts.SecurePort
	} else {
		scheme = options.HTTP
		port = opts.InsecurePort
	}
	if opts.CustomReportPort != 0 {
		port = opts.CustomReportPort
	}

	hostIp := opts.HostIP
	if opts.CustomReportAddress != "" {
		hostIp = opts.CustomReportAddress
	}

	return types.ServerInfo{
		IP:           hostIp,
		Port:         port,
		ExternalIp:   opts.ExternalIp,
		ExternalPort: opts.ExternalPort,
		HostName:     hostname,
		Scheme:       scheme,
		Cluster:      clusterID,
		Version:      bcsVersion.GetVersion(),
		Pid:          os.Getpid(),
	}
}
